// 'use strict'
// import { app, protocol, BrowserWindow, ipcMain, globalShortcut, Menu, Tray, screen } from 'electron'
// import { createProtocol } from 'vue-cli-plugin-electron-builder/lib'
// import installExtension, { VUEJS_DEVTOOLS } from 'electron-devtools-installer'
// const path = require('path')
// const isDevelopment = process.env.NODE_ENV !== 'production'
// /** 当前系统平台 */
// const platformType = { win32: false, darwin: false, linux: false }
// platformType[process.platform] = true

// // logo区域:
// const logoMap = {
// 	win32: 'logo_256x256.ico',
// 	darwin: 'logo_256x256.icns',
// 	linux: 'logo_256x256.png',
// }

// /** 应用标题 */
// const appTitle = '石锛'
// /** 是否为开发环境 */
// const isDevEnv = !app.isPackaged
// /** 静态资源目录 */
// const appDirPath = path.resolve(__dirname, '..')
// const staticDirPath = path.resolve(appDirPath, 'static')
// // Scheme must be registered before the app is ready
// protocol.registerSchemesAsPrivileged([
// 	{ scheme: 'app', privileges: { secure: true, standard: true } },
// ])
// // 开发和线上路劲不同的问题
// const winLogo = isDevEnv
// 	? path.join(staticDirPath, 'icons', logoMap[process.platform])
// 	: path.join(appDirPath, './icons/logo_256x256.ico')

// // 主窗口
// let winMain = null
// /** 系统托盘 */
// let winTray = null

// /** 外部链接窗口 */
// let customWindow = {}

// // 其他窗口
// let otherWindow = {}
// // Quit when all windows are closed.
// app.on('window-all-closed', () => {
// 	// On macOS it is common for applications and their menu bar
// 	// to stay active until the user quits explicitly with Cmd + Q
// 	if (process.platform !== 'darwin') {
// 		app.quit()
// 	}
// })

// /** 初始化完成 */
// app.whenReady().then(async () => {
// 	// 发起请求获取包含图标属性的对象
// })

// app.on('activate', () => {
// 	// On macOS it's common to re-create a window in the app when the
// 	// dock icon is clicked and there are no other windows open.
// 	if (BrowserWindow.getAllWindows().length === 0) createWindow()
// })

// // This method will be called when Electron has finished
// // initialization and is ready to create browser windows.
// // Some APIs can only be used after this event occurs.
// app.on('ready', async () => {
// 	if (isDevelopment && !process.env.IS_TEST) {
// 		// Install Vue Devtools
// 		try {
// 			await installExtension(VUEJS_DEVTOOLS)
// 		} catch (e) {
// 			console.error('Vue Devtools failed to install:', e.toString())
// 		}
// 	}
// 	createWindow()
// 	afterCreateWindow()
// 	createTray() // 创建系统托盘
// })

// // Exit cleanly on request from parent process in development mode.
// if (isDevelopment) {
// 	if (process.platform === 'win32') {
// 		process.on('message', data => {
// 			if (data === 'graceful-exit') {
// 				app.quit()
// 			}
// 		})
// 	} else {
// 		process.on('SIGTERM', () => {
// 			app.quit()
// 		})
// 	}
// }

// // 方法区域:
// /** 创建主窗口 */
// async function createWindow() {
// 	// Create the browser window.
// 	winMain = new BrowserWindow({
// 		icon: winLogo, // 图标（底部栏的logo）
// 		width: 350,
// 		height: 450,
// 		minWidth: 350,
// 		minHeight: 450,
// 		heightWidth: 450,
// 		maximizable: false,
// 		opacity: 0, // 设置窗口的初始透明度
// 		resizable: false, // 是否允许拉伸大小
// 		center: true, // 是否在屏幕居中
// 		frame: false, // 是否有边框
// 		fullscreenable: true, // 是否允许全屏，为false则插件screenfull不起作用
// 		autoHideMenuBar: false, // 自动隐藏菜单栏, 除非按了Alt键, 默认值为 false
// 		backgroundColor: '#fff', // 背景颜色为十六进制值
// 		webPreferences: {
// 			webSecurity: false, // 当设置为 false, 将禁用同源策略
// 			devTools: true, // 是否开启 DevTools, 如果设置为 false, 则无法使用 BrowserWindow.webContents.openDevTools()。 默认值为 true
// 			// Use pluginOptions.nodeIntegration, leave this alone
// 			// See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
// 			nodeIntegration: true, // 是否集成 Nodejs, 默认值为 false
// 			contextIsolation: false,
// 		},
// 	})
// 	console.log(process.env.WEBPACK_DEV_SERVER_URL)
// 	winMain.removeMenu()
// 	// 处理path外部链接的打开
// 	winMain.webContents.setWindowOpenHandler(details => {
// 		createCustomWindow(details.url) // 创建自定义窗口并加载链接的内容
// 		// return { action: 'deny' }// 阻止打开新窗口
// 	})
// 	/** 初始化完成后显示 */
// 	winMain.on('ready-to-show', () => {
// 		winMain.setOpacity(1)
// 		showMainWindow() // 显示主窗口
// 		winMain.setAlwaysOnTop(true)
// 		winMain.once('focus', () => winMain.setAlwaysOnTop(false))
// 	})
// 	// /** 主窗口-即将关闭 */
// 	winMain.on('close', event => {})
// 	/** 主窗口-已关闭 */
// 	winMain.on('closed', () => {
// 		destroyTray()
// 		winMain = null
// 	})
// 	if (process.env.WEBPACK_DEV_SERVER_URL) {
// 		// Load the url of the dev server if in development mode
// 		await winMain.loadURL(process.env.WEBPACK_DEV_SERVER_URL)
// 		if (!process.env.IS_TEST) winMain.webContents.openDevTools()
// 	} else {
// 		createProtocol('app')
// 		// Load the index.html when not in development
// 		winMain.loadURL('app://./index.html')
// 	}
// }
// /** 显示主窗口 */
// function showMainWindow() {
// 	winMain.center()
// 	winMain.show()
// 	winMain.focus()
// }
// // 创建自定义窗口并加载链接的内容
// function createCustomWindow(url) {
// 	console.log('url', url)
// 	if (customWindow[url] && !customWindow[url].isDestroyed()) {
// 		// 如果该 URL 的窗口已存在，则将其带到前台并返回
// 		customWindow[url].show()
// 		return
// 	}
// 	customWindow[url] = new BrowserWindow({
// 		width: 800,
// 		height: 600,
// 		autoHideMenuBar: true, // 自动隐藏菜单栏, 除非按了Alt键, 默认值为 false
// 		icon: winLogo,
// 		// frame: false, // 隐藏标题栏
// 		// title:'xxx',//设置title,会被网页本身的title覆盖
// 		webPreferences: {
// 			devTools: true, // 是否开启 DevTools, 如果设置为 false, 则无法使用 BrowserWindow.webContents.openDevTools()。 默认值为 true
// 			nodeIntegration: true, // 是否启用Node集成
// 		},
// 	})
// 	// 当链接内部的页面导航完成后，您可以重新设置自定义标题。
// 	// customWindow[url].webContents.on('did-navigate-in-page', (event, url) => {
// 	//   customWindow[url].setTitle('Custom Window Title');
// 	// });
// 	// 可以尝试使用 dom-ready 事件，它会在页面 DOM 加载完成后触发。
// 	// 请注意，dom-ready 事件可能在 did-navigate-in-page 事件之前触发
// 	// customWindow[url].webContents.on('dom-ready', () => {
// 	//   customWindow[url].setTitle('Custom Window Title');
// 	// });

// 	// 加载链接的内容
// 	customWindow[url].loadURL(url)
// 	// 可以根据需要设置自定义窗口的样式、大小等
// 	// 例如，customWindow.setResizable(false) 可以禁止窗口调整大小
// 	// 可以在自定义窗口中使用各种 Electron API 进行交互和操作
// 	// 在自定义窗口关闭时，释放窗口资源
// 	customWindow[url].on('closed', () => {
// 		delete customWindow[url]
// 	})
// }
// //#region 函数声明 - 系统托盘
// /** 销毁系统托盘 */
// function destroyTray() {
// 	platformType.darwin && app.dock.hide()
// 	winTray.destroy()
// 	winTray = null
// }
// /** 创建系统托盘 */
// function createTray() {
// 	if (winTray) return
// 	/** 右键/dock 菜单选项 */
// 	const menuList = Menu.buildFromTemplate([
// 		{
// 			label: '显示',
// 			click: showMainWindow,
// 		},
// 		{
// 			label: '控制台',
// 			visible: isDevEnv,
// 			click: () => winMain.webContents.openDevTools(),
// 		},
// 		{
// 			// role: 'quit',
// 			label: '关闭应用',
// 			click: () => {
// 				app.exit()
// 			},
// 		},
// 	])

// 	if (platformType.darwin) {
// 		const dockIcon = path.join(staticDirPath, 'icons', logoMap.linux)
// 		app.dock.setIcon(dockIcon)
// 		app.dock.setMenu(menuList)
// 	} else {
// 		/** 声明托盘对象 */
// 		winTray = new Tray(winLogo)
// 		/** 悬停提示内容 */
// 		winTray.setToolTip(appTitle)
// 		/** 右键菜单 */
// 		winTray.setContextMenu(menuList)
// 		/** 双击图标打开窗口 */
// 		winTray.on('double-click', showMainWindow)
// 	}
// }
// function afterCreateWindow() {
// 	// 注册全局快捷键 Ctrl+L
// 	globalShortcut.register('CommandOrControl+L', () => {
// 		// 在这里执行你想要的逻辑
// 		winMain.webContents.openDevTools()
// 	})
// 	// // 监听窗口放大事件
// 	winMain.on('maximize', e => {
// 		// 向渲染进程发送消息2
// 		winMain.webContents.send('message-from-main', false)
// 		e.preventDefault()
// 		setTimeout(() => {
// 			// 处理用户有多个屏幕的情况
// 			const currentCursor = screen.getCursorScreenPoint()
// 			const activeScreen = screen.getDisplayNearestPoint(currentCursor)
// 			const { width: screenWidth, height: screenHeight } = activeScreen.workAreaSize
// 			winMain.setMaximumSize(screenWidth, screenHeight)
// 			winMain.getMaximumSize()
// 			winMain.setSize(screenWidth, screenHeight)
// 			winMain.center()
// 		}, 50)
// 	})
// 	// 监听窗口缩小事件
// 	winMain.on('unmaximize', () => {
// 		// 向渲染进程发送消息
// 		winMain.webContents.send('message-from-main', true)
// 	})
// }
// /** 设置窗口大小 */
// ipcMain.on('set_win_size', (_, params) => {
// 	if (!winMain) return
// 	// const size = adaptSizeWithScreen(params)
// 	winMain.setResizable(params.resizable)
// 	if (!params.isLogin) {
// 		winMain.setSize(params.width, params.height)
// 		winMain.setMinimumSize(params.width, params.height) //主页面的最小尺寸
// 	} else {
// 		winMain.setMinimumSize(params.width, params.height) //主页面的最小尺寸
// 		winMain.setSize(params.width, params.height)
// 	}
// 	winMain.setMaximizable(params.maxable)
// 	winMain.center()
// 	winMain.focus()
// })
// // 退出
// ipcMain.on('set_quit', params => {
// 	if (!winMain) return
// 	//   app.quit()
// 	app.exit()
// })
// // 缩小窗口
// ipcMain.on('set_minimize', params => {
// 	if (!winMain) return
// 	winMain.minimize() // 调用缩小窗口方法
// })
// // 放大窗口
// ipcMain.on('set_maximize', params => {
// 	if (!winMain) return
// 	if (winMain.isMaximized()) {
// 		winMain.restore() // 如果窗口已经放大，恢复原始尺寸
// 		// winMain.webContents.send("message-from-main", true)//向渲染进程发送消息
// 	} else {
// 		winMain.maximize() // 如果窗口未放大，调用放大窗口方法
// 		// winMain.webContents.send("message-from-main", false)//向渲染进程发送消息
// 	}
// })
// const windowsCfg = {
//     id: '', //唯一id
//     title: '', //窗口标题
//     width: 800, //宽度
//     height: 600, //高度
//     minWidth: 800, //最小宽度
//     minHeight: 600, //最小高度
//     route: '', // 页面路由URL '/manage?id=123'
//     resizable: true, //是否支持调整窗口大小
//     maximize: false, //是否最大化
//     backgroundColor:'#000000', //窗口背景色
//     data: null, //数据
// 	show: true, //是否显示
// 	minimizable: true, //是否允许最小化
// 	maximizable: true, //是否允许最大化
// 	contextIsolation: false, //上下文隔离
// 	nodeIntegration: true, //启用Node集成（是否完整的支持 node）
// 	titleBarStyle: 'hidden', // 隐藏标题栏
// 	enableRemoteModule: true, //是否启用远程模块（即在渲染进程页面使用remote）
// 	webSecurity: false, // 当设置为 false, 将禁用同源策略
// 	autoHideMenuBar: true, // 自动隐藏菜单栏, 除非按了Alt键, 默认值为 false
//     isMultiWindow: false, //是否支持多开窗口 (如果为false，当窗体存在，再次创建不会新建一个窗体 只focus显示即可，，如果为true，即使窗体存在，也可以新建一个)
//     isMainWin: false, //是否主窗口(当为true时会替代当前主窗口)
//     parentId: '', //父窗口id  创建父子窗口 -- 子窗口永远显示在父窗口顶部 【父窗口可以操作】
//     modal: false, //模态窗口 -- 模态窗口是禁用父窗口的子窗口，创建模态窗口必须设置 parent 和 modal 选项 【父窗口不能操作】
// }
// ipcMain.on('window-new', (e, options) => {
// 	let params = Object.assign({}, windowsCfg, options)
// 	let otherWin = new BrowserWindow({
// 		width: params.width,
// 		height: params.height,
// 		backgroundColor: params.backgroundColor,
// 		autoHideMenuBar: params.autoHideMenuBar,
// 		titleBarStyle: params.titleBarStyle ,
// 		resizable:params.resizable,
// 		minimizable: params.minimizable,
// 		maximizable: params.maximizable,
// 		show: params.show,
// 		modal: params.modal,
// 		webPreferences: {
// 			contextIsolation: params.contextIsolation,
// 			nodeIntegration: params.nodeIntegration,
// 			webSecurity: params.webSecurity,
// 			enableRemoteModule: params.enableRemoteModule,
// 		},
// 	})
// 	otherWindow[otherWin.id] = {
// 		route: params.route,
// 		isMultiWindow: params.isMultiWindow,
// 	}
// 	let winURL
// 	if (process.env.WEBPACK_DEV_SERVER_URL) {
// 		winURL = params.route ? `http://localhost:8848/#${params.route}` : `http://localhost:8848`
// 	} else {
// 		createProtocol('app')
// 		winURL = params.route ? `app://./index.html/#${params.route}` : `app://./index.html`
// 	}
// 	console.log(winURL)
// 	otherWindow.loadURL(winURL)
// 	otherWindow.on('closed', () => {
// 		otherWindow = null
// 	})
// })
